<?php
namespace Permission\Model;
use Think\Model;
/**
 * huhaiqin,2023.03.28
 * 角色与菜单关系管理
 */
class PermissionRoleMenuModel extends Model{

    protected $cache_name = 'PERMISSION_MENU_ROLE'; // 缓存名称

    /**
     * huhaiqin，2023.03.30
     * 检测权限
     * param $check_role string 检测角色
     */
    private function _check_auth($check_role = 'admin'){
        if(!$_SESSION['loginUser']){
            _apiReturn(0,'请先登录~');
        }
        if($check_role == 'admin'){
            if($_SESSION['loginUser']['role'] != 'admin'){
                _apiReturn(0,'您没有权限执行该操作~');
            }
        }
    }

    /**
     * huhaiqin,2023.03.30
     * 根据角色id获取角色菜单
     */
    public function _get_menu_by_role_id($role_id = 0){
        $data = F($this->cache_name.'_'.$role_id);
        if(!$data){
            // $data = $this->where('role_id = '.$role_id)->getField('menu_id',true);
            $data = $this->where('role_id = '.$role_id)->field('menu_id')->select();
            $data = array_column($data,'menu_id');
            F($this->cache_name.'_'.$role_id,$data); //写入缓存
        }
        return $data ? $data : [];
    }

    /**
     * huhaiqin,2023,03.30
     * 保存权限
     */
    public function _save($role_id = 0,$menu_ids = []){
        $this->_check_auth();//检测权限
        if(!$role_id){
            _apiReturn(0,'角色ID不能为空~');
        }
        $this->where(['role_id'=>$role_id])->delete(); //先清除掉所有
        foreach($menu_ids as $menu_id){
            $data = [
                'role_id' => $role_id,
                'menu_id' => $menu_id
            ];
            $this->add($data);
        }
        F($this->cache_name.'_'.$role_id,NULL);//有变化就删除
        _apiReturn(1,'success');
    }
}